# 定义星座日期范围和对应的星座信息
constellations = [
    {
        "name": "白羊座",
        "start_date": (3, 21),
        "end_date": (4, 19),
        "info": "白羊座的人热情冲动、爱冒险、慷慨、天不怕地不怕而且一旦下定决心，不到黄河心不死，排除万难也要达到目的。"
    },
    {
        "name": "金牛座",
        "start_date": (4, 20),
        "end_date": (5, 20),
        "info": "金牛座的人比较保守，喜欢稳定，一旦有什么变动就会觉得心里不踏实，性格也比较慢热，但一旦认定的事情，他会尽自己最大的努力去完成。"
    },
    {
        "name": "双子座",
        "start_date": (5, 21),
        "end_date": (6, 21),
        "info": "双子座的人往往喜好新鲜事物，他们有着小聪明，但做事常常不太专一。与双子座的人聊天也许会让你觉得很兴奋，因为他们脑子中那些新鲜的、稀奇古怪的东西会让人充满好奇。"
    },
    {
        "name": "巨蟹座",
        "start_date": (6, 22),
        "end_date": (7, 22),
        "info": "巨蟹座的人往往充满爱心，重视家庭，他们将母性的本质发挥到了极限。对他们来说，最重要的东西是家庭，他们很会保护自己的家人，同时也渴望得到家人的关爱。"
    },
    {
        "name": "狮子座",
        "start_date": (7, 23),
        "end_date": (8, 22),
        "info": "狮子座的人自信满满，具有天生的领导才能，他们喜欢成为众人瞩目的焦点，有着强烈的表现欲。他们热情开朗，对人真诚大方，但有时候也会有些骄傲自大。"
    },
    {
        "name": "处女座",
        "start_date": (8, 23),
        "end_date": (9, 22),
        "info": "处女座的人通常很有责任心，做事一丝不苟，追求完美。他们注重细节，对自己和他人的要求都很高。他们善于分析和思考，能够很好地处理各种问题。"
    },
    {
        "name": "天秤座",
        "start_date": (9, 23),
        "end_date": (10, 23),
        "info": "天秤座的人优雅迷人，注重平衡和协调。他们善于与人沟通，能够很好地处理人际关系。他们追求公平和正义，不喜欢冲突和争吵。"
    },
    {
        "name": "天蝎座",
        "start_date": (10, 24),
        "end_date": (11, 22),
        "info": "天蝎座的人神秘而有魅力，他们有着强烈的好奇心和探索欲。他们对感情非常专注，但也很容易产生嫉妒和猜疑。他们有着坚韧不拔的毅力，一旦确定目标就会全力以赴。"
    },
    {
        "name": "射手座",
        "start_date": (11, 23),
        "end_date": (12, 21),
        "info": "射手座的人乐观开朗，热爱自由，他们不喜欢被束缚，喜欢追求新鲜和刺激的事物。他们有着广泛的兴趣爱好，对世界充满了好奇。"
    },
    {
        "name": "摩羯座",
        "start_date": (12, 22),
        "end_date": (1, 19),
        "info": "摩羯座的人踏实稳重，有强烈的责任感和事业心。他们通常比较内敛，不善于表达自己的情感。他们有着坚定的信念和目标，会一步一个脚印地去实现自己的理想。"
    },
    {
        "name": "水瓶座",
        "start_date": (1, 20),
        "end_date": (2, 18),
        "info": "水瓶座的人聪明伶俐，思维独特，他们有着创新精神和改革意识。他们喜欢自由和独立，不喜欢随波逐流。他们对朋友非常真诚，但有时候也会显得有些冷漠。"
    },
    {
        "name": "双鱼座",
        "start_date": (2, 19),
        "end_date": (3, 20),
        "info": "双鱼座的人温柔善良，富有同情心和想象力。他们很感性，容易受到周围环境的影响。他们对爱情充满了幻想，渴望浪漫和甜蜜的爱情。"
    }
]


def get_constellation(month, day):
    """
    根据输入的月份和日期判断对应的星座
    :param month: 月份
    :param day: 日期
    :return: 对应的星座信息，如果未找到则返回 None
    """
    for constellation in constellations:
        start_month, start_day = constellation["start_date"]
        end_month, end_day = constellation["end_date"]
        if (month, day) >= (start_month, start_day) and (month, day) <= (end_month, end_day):
            return constellation
    # 处理摩羯座跨年的情况
    if (month == 1 and day <= 19) or (month == 12 and day >= 22):
        for constellation in constellations:
            if constellation["name"] == "摩羯座":
                return constellation
    return None


def main():
    print("欢迎来到星座查询游戏！")
    while True:
        try:
            month = int(input("请输入你的出生月份（1 - 12）："))
            if 1 <= month <= 12:
                day = int(input("请输入你的出生日期："))
                # 简单检查日期的有效性，不考虑不同月份天数不同的复杂情况
                if 1 <= day <= 31:
                    constellation = get_constellation(month, day)
                    if constellation:
                        print(f"你的星座是 {constellation['name']}。")
                        print(constellation["info"])
                    else:
                        print("未找到对应的星座信息，请检查输入是否正确。")
                else:
                    print("输入的日期无效，请输入 1 - 31 之间的数字。")
            else:
                print("输入的月份无效，请输入 1 - 12 之间的数字。")
        except ValueError:
            print("输入无效，请输入有效的整数。")

        play_again = input("是否继续查询？(y/n): ")
        if play_again.lower() != 'y':
            print("游戏结束，感谢参与！")
            break


if __name__ == "__main__":
    main()